// ./swagger/index.js
var path = require("path");
var express = require("express");
var swaggerUi = require("swagger-ui-express");
var swaggerJSDoc = require("swagger-jsdoc");
const { usertags, userschemas, userpaths } = require("./users")
const cinemas = require('./cinemas.js');
const schedules = require('./schedules.js');
const order = require('./order.js');
const movies = require('./movies.js');

// const theaters=require("./theaters.js")








// 他就是 swagger 的配置信息
const options = {
  definition: {
    // 采用的 openapi 版本
    openapi: "3.0.0",
    // 页面基本信息
    info: {
      title: "猫眼管理系统", // 设置 swagger 的标题。（项目名称）
      version: "1.0.0", //设置版本
    },

    // 配置功能模块
    tags: [
      schedules.tags,
      order.tags,
      usertags,
      cinemas.tag,      //影院模块
      movies.tag,       //电影模块
    ],

    components: {
      securitySchemes: {
        oauth2: {
          type: "oauth2",
          flows: {
            authorizationCode: {
              authorizationUrl: "/oauth/dialog",
              tokenUrl: "/oauth/token",
            },
          },
        },
      },
      // 用来描述数据结构
      schemas: {
        ...userschemas,
        ...cinemas.schemas,     //影院模块
        ...schedules.schemas,
        ...order.schemas,
        ...movies.schemas,      //电影模块
      },
    },
    // http://localhost:3000/students(url)?curPage=1&eachPage=10 (query)
    // 配置接口

    paths: {
      ...userpaths,
      ...cinemas.paths,       //影院模块
      ...schedules.paths,
      ...order.paths,
      ...movies.paths,        //电影模块
      
   
    },
  },
  // 去指定项目路径下收集 swagger 注释，用于生成 swagger 文档。
  apis: [path.join(__dirname, "../routes/**/*.js")],
};
var swaggerJson = function (req, res) {
  res.setHeader("Content-Type", "application/json");
  res.send(swaggerSpec);
};
const swaggerSpec = swaggerJSDoc(options);
// http://localhost:3001/
var swaggerInstall = function (app) {
  if (!app) {
    app = express();
  }
  // 根据配置自动生成 swagger.json 文件
  app.get("/swagger.json", swaggerJson);
  // 使用 swaggerSpec 生成 swagger 文档页面，并开放在指定路由
  app.use("/swagger", swaggerUi.serve, swaggerUi.setup(swaggerSpec));
};
module.exports = swaggerInstall;
